package com.sj.service;

import com.sj.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author 小七
 * @since 2021-07-30
 */
public interface UserService extends IService<User> {

    /**
     * 根据用户名查询用户
     *
     * @param username 用户名
     * @return 用户对象
     */
    User getUserByUsername(String username);

    /**
     * 根据用户id获取用户的权限信息
     *
     * @param id 用户id
     * @return 用户权限，使用 ',' 分割
     */
    String getUserAuthorityInfo(Integer id);

    /**
     * 根据用户名清除用户权限redis缓存
     *
     * @param username 用户名
     */
    void clearUserAuthorityInfoByUsername(String username);

    /**
     * 根据角色id查询拥有该角色的用户，清除用户权限redis缓存
     *
     * @param roleId 角色id
     */
    void clearUserAuthorityInfoByRoleId(Integer roleId);

    /**
     * 根据菜单id查询拥有该菜单的角色，根据拥有该角色的用户，清除用户权限redis缓存
     *
     * @param menuId 菜单id
     */
    void clearUserAuthorityInfoByMenuId(Integer menuId);
}